package skyinline.EX01.SungJuk;

import java.util.Scanner;

public class EX01_SungJukService implements EX01_ISungJukService {

	EX01_SungJukVO esv = new EX01_SungJukVO();
	EX01_SungJukDAO esjd = new EX01_SungJukDAO();
	Scanner sc = new Scanner(System.in);
	
	@Override
	public void createSungJuk() {
		
		System.out.print("학생의 이름을 입력하세요 : ");
		esv.setStudent_Name(sc.next());
	
		sc = new Scanner(System.in);
		while ( true ) {
			System.out.print("학생의 국어 점수를 입력하세요 : ");
			esv.setStudent_Kor(sc.nextInt());
			if ( esv.getStudent_Kor() < 0 || esv.getStudent_Kor() > 100 ) {
				System.err.println("점수를 잘못입력하셨습니다. 다시 확인하세요.");
			} else {  break; }
		}
		while ( true ) {
			System.out.print("학생의 영어 점수를 입력하세요 : ");
			esv.setStudent_Eng(sc.nextInt());
			if ( esv.getStudent_Eng() < 0 || esv.getStudent_Eng() > 100 ) {
				System.err.println("점수를 잘못입력하셨습니다. 다시 확인하세요.");
			} else {  break; }
		}
		while ( true ) {
			System.out.print("학생의 수학 점수를 입력하세요 : ");
			esv.setStudent_Mat(sc.nextInt());
			if ( esv.getStudent_Mat() < 0 || esv.getStudent_Mat() > 100 ) {
				System.err.println("점수를 잘못입력하셨습니다. 다시 확인하세요.");
			} else {  break; }
		}
		
		esv.setStudent_Tot(totalPoint(esv.getStudent_Kor(), esv.getStudent_Eng(), esv.getStudent_Mat()));
		esv.setStudent_Avg(averagePoint(esv.getStudent_Tot()));
		esv.setStudent_Grd(gradePoint(esv.getStudent_Avg()));
		
		System.out.println(esv.toString());
		
			if ( esjd.insertSungJuk(esv))
				System.out.println("성적등록 성공!");
			else
				System.err.println("성록등록 실패!");
		
		while ( true ) {
			System.out.print("성적을 추가로 등록하시겠습니까? [ 01 ] YES     [ 02 ] NO     :     ");
			switch ( sc.next() ) {
			case "01 " : case "1" :
				new EX01_SungJukService().createSungJuk();
			case "02" : case "2" :
				System.err.println("시스템을 종료합니다.");
				System.exit( 0 );
			default :
				System.err.println("잘못 선택하셨습니다. 다시 입력하세요.");
			}
		}
	}

	@Override
	public int totalPoint(int kor, int eng, int mat) {
		return kor + eng + mat;
	}

	@Override
	public float averagePoint(int tot) {
		return Math.round ( tot / 3f  * 100 ) / 100f;
	}

	@Override
	public String gradePoint(float avg) {
		switch ( ( int ) avg / 10 ) {
		case 10 : case 9 : 	return "A";
		case 8 : return "B";
		case 7 : return "C";
		case 6 : return "D";
		default : return "F";
		}
	}
	
}
